package com.atguigu.day13.teacher.homework01;


import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import java.util.Comparator;

/*
（1）声明一个Employee员工类，
- 包含编号、姓名、薪资、年龄，属性私有化，
- 提供get/set，提供无参和有参构造，
- 重写toString，返回员工信息
- 实现Comparable接口，重写int compareTo(Employee emp)方法，
  按照编号比较大小。

（2）编写数组工具类ArrayTools，包含

- 静态方法public static void sort(Comparable[] arr)：实现给对象数组从小到大排序，要求元素的运行时类型必须实现Comparable接口
- 静态方法public static void sort(Object[] arr, Comparator c)：实现给对象数组从小到大排序，需要提供一个Comparator接口的实现类对象，给数组的元素对象排序。
- 静态方法public static void print(Object[] arr)：使用foreach循环遍历输出数组元素

（3）在测试类创建Employee[]元素数组，长度为5，创建5个员工对象

- 按照编号从小到大排序输出
- 按照编号从大到小排序输出（声明一个类实现Comparator接口，实现按照编号逆序比较大小）
- 按照薪资从低到高排序输出（声明一个类实现Comparator接口，实现按照薪资比较大小）
- 按照年龄从大到小排序输出（声明一个类实现Comparator接口，实现按照年龄逆序比较大小）
 */
public class EmployeeTest {
    Employee[]arr;
    @Before
    public void before(){
        //1.创建员工对象
        Employee e1 = new Employee(5,"杨幂",99999.9,29);
        Employee e2 = new Employee(4,"赵丽颖",99999.3,22);
        Employee e3 = new Employee(3,"李冰冰",99999.2,23);
        Employee e4 = new Employee(6,"迪丽热巴",99999.1,27);
        Employee e5 = new Employee(1,"刘亦菲",99999.5,26);
        //2.创建数组并添加数据
        arr = new Employee[]{e1,e2,e3,e4,e5};
        //3.排序前输出
        System.out.println("排序前");
        ArrayTools.print(arr);
    }

    @Test
    public void test01(){
        //4.排序
        ArrayTools.sort(arr);
    }

    @Test
    public void test02(){
        //todo id倒序

        Comparator<Employee> byIdDesc = new Comparator<Employee>(){
            @Override
            public int compare(Employee o1, Employee o2) {
                return -(o1.getId()-o2.getId());
            }
        };
        //SortEmployeeByIdDesc byIdDesc = new SortEmployeeByIdDesc();
        ArrayTools.sort(arr,byIdDesc);
    }
    @Test
    public void test03(){
        Comparator<Employee> bySalary = new Comparator<Employee>(){
            @Override
            public int compare(Employee o1, Employee o2) {
                if(o1.getSalary()>o2.getSalary()){
                    return 1;
                }else if(o1.getSalary()<o2.getSalary()){
                    return -1;
                }
                return 0;
            }
        };
        //SortEmployeeBySalary bySalary = new SortEmployeeBySalary();
        ArrayTools.sort(arr,bySalary);
    }

    @Test
    public void test04(){
        Comparator<Employee> byAgeDesc = new Comparator<Employee>(){
            @Override
            public int compare(Employee o1, Employee o2) {
                return -(o1.getAge()-o2.getAge());
            }
        };
     //SortEmployeeByAgeDesc byAgeDesc = new SortEmployeeByAgeDesc();

     ArrayTools.sort(arr,byAgeDesc);
    }

    @After
    public void after(){
        //5.排序后输出
        System.out.println("排序后");
        ArrayTools.print(arr);
    }
}
